﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace 贪吃蛇
{
    internal class GameScene:ISceneUpdate     //游戏场景类    
    {
        Map map;
        Snake snake;
        Food food;
        int UpDateIndex = 0;
        public GameScene()
        {
            map = new Map();  
            snake =new Snake(10,10);
            food = new Food(snake);
        }
        public void UpDate()
        {
            if (UpDateIndex % 8000 == 0)   //使得游戏对象更新速度减慢
            {

                map.Draw();    //绘制地图
                food.Draw();   //绘制食物
                snake.Move();   //移动蛇
                snake.Draw();   // 每次在绘制的时候 都会覆盖掉之前的内容     所以后面写程序的时候不用考虑食物擦除问题
                //绘制蛇
                
                UpDateIndex = 0;

                //执行结束逻辑
                if(snake.CheckEnd (map))   //检测游戏是否结束
                {
                    Game.ChangeScene(E_SceneType.End);  //切换场景,执行结束场景的逻辑 
                }
                
            }
            snake.CheckEatFood(food);   //检测蛇是否吃到食物
            ++UpDateIndex;  
            //检测用户输入的值a
            //在程序中检测用户输入，使得程序不被检测卡住
            if(Console.KeyAvailable) //检测检测有没有被激活  有才会true
            {


                switch (Console.ReadKey(true).Key)
                {
                    //case ConsoleKey.:
                    case ConsoleKey.A:
                        snake.ChangeDir(E_MoveDir.Left);
                        break;
                    case ConsoleKey.D:
                        snake.ChangeDir(E_MoveDir.Right);
                        break;
                    case ConsoleKey.W:
                        snake.ChangeDir(E_MoveDir.Up);
                        break;
                    case ConsoleKey.S:
                        snake.ChangeDir(E_MoveDir.Down);
                        break;
                }
            }
        }

    }
}
